package ar.com.ford.it.fullEconomics.facade;

import java.util.Collection;
import ar.com.ford.it.fullEconomics.exception.FullEconomicsException;
import ar.com.ford.it.fullEconomics.logic.SupplierLogic;
import ar.com.ford.it.fullEconomics.persistence.dto.Teesg01Plant;
import ar.com.ford.it.fullEconomics.persistence.dto.Teess01Supplier;
import ar.com.ford.it.fullEconomics.struct.OptionCombo;
import ar.com.ford.it.fullEconomics.wslx.FullEconomicsWslxUser;

public class SupplierFacade {
    /**
     * Busca Economic Sources segun code y name
     * 
     * @param code
     * @param name
     * @return
     * @throws FullEconomicsException
     */
    public Collection<Teess01Supplier> findSupplier(String classCode, String code,
                                                             String name,
                                                             Teesg01Plant plant)
            throws FullEconomicsException {
        SupplierLogic logic = new SupplierLogic();
        Collection<Teess01Supplier> ret = logic.findSupplier(classCode,code,
                name, plant);

        return ret;
    }

    /**
     * Da de alta el Economic Source pasado por parametro
     * 
     * @param supplier
     * Economic Source a dar de alta
     * @param user
     * Usuario que da de alta el Economic Source
     * @throws FullEconomicsException
     */
    public void createSupplier(Teess01Supplier supplier,
                                     FullEconomicsWslxUser user)
            throws FullEconomicsException {
        SupplierLogic logic = new SupplierLogic();

        logic.createSupplier(supplier, user);
    }

    /**
     * Actualiza el Economic Source pasado por parametro
     * 
     * @param supplier
     * Supplier a actualizar
     * @param user
     * Usuario que actualiza el Economic Source
     * @throws FullEconomicsException
     */
    public void updateSupplier(Teess01Supplier supplier,
                                     FullEconomicsWslxUser user)
            throws FullEconomicsException {
        SupplierLogic logic = new SupplierLogic();

        logic.updateSupplier(supplier, user);
    }

    /**
     * Elimina el supplier  pasado por parametro
     * 
     * @param supplier
     * Supplier a eliminar
     * @throws FullEconomicsException
     */
    public void deleteSupplier(Teess01Supplier supplier)
            throws FullEconomicsException {
        SupplierLogic logic = new SupplierLogic();

        logic.deleteSupplier(supplier);
    }

    /**
     * Determina si el supplier pasado por parametro puede ser borrado.
     * Esto lo determina segun tenga o no  referencia a el
     * 
     * @param supplier
     * @return True si puede ser borrado. False en caso contrario
     * @throws FullEconomicsException 
     */
    public void supplierCanBeDeleted(Teess01Supplier supplier) throws FullEconomicsException {
        SupplierLogic logic = new SupplierLogic();
        boolean ret = false;
        
        logic.deleteSupplier(supplier);
        
    }

    /**
     * Determina si ya existe un Supply con el nombre "name" pasado por
     * parametro
     * 
     * @param name
     * @param plant
     * @return True si ya existe un Economic Source con el nombre pasado por
     * parametro. False en caso contrario
     * @throws FullEconomicsException
     */
    public boolean supplierNameAlreadyExists(String name, Teesg01Plant plant) throws FullEconomicsException {
        SupplierLogic logic = new SupplierLogic();
        boolean ret = false;
        
        ret = logic.supplierNameAlreadyExists(name, plant);
        return ret;
    }
    
    /**
     * 
     * @return Coleccion de posibles Supplier Types
     */
    public Collection<OptionCombo> getComboSupplierType() {
        SupplierLogic logic = new SupplierLogic();
        Collection<OptionCombo> ret = null;
        
        ret = logic.getComboSupplierType();
        return ret;
    }
    
    public Teess01Supplier getSupplierByPk(Teess01Supplier supply) throws FullEconomicsException {
        SupplierLogic logic = new SupplierLogic();
        Teess01Supplier ret = new Teess01Supplier();
        
        ret = logic.getSupplierByPk(supply);
        return ret;
    }
}
